home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-09-15 | 49.5 KB | 1,518 lines |
- '**************************************************************************
- '*
- '* Tun SQL 1.00 Setup Script
- '* Copyright (c) 1995, Esker Corporation. All rights reserved.
- '*
- '**************************************************************************
-
- ''$DEFINE DEBUG ''Define for script development/debugging
-
- '$INCLUDE 'setupapi.inc'
- '$INCLUDE 'msdetect.inc'
-
- GLOBAL WELCOMDLG$
- GLOBAL ASKCUSTOM$
- GLOBAL FINDINSTTYPE$
- GLOBAL ENCRYPTDLG$
- GLOBAL COPYFILES$
- GLOBAL ENCRYPTFILES$
- GLOBAL CREATEINIFILES$
- GLOBAL ADDPATH$
- GLOBAL ASKTCPCONF$
- GLOBAL RUNTCPCONF$
- GLOBAL CREATEGROUPS$
- GLOBAL szSN$
- GLOBAL szAK$
- GLOBAL szLS$
- GLOBAL DEST$
-
- '$INCLUDE 'setup.inc'
-
- ''-- Dialog ID's ----------------------------------------------------------
- CONST WELCOME = 100
- CONST ASKQUIT = 200
- CONST DESTPATH = 300
- CONST EXITFAILURE = 400
- CONST EXITQUIT = 600
- CONST EXITSUCCESS = 700
- CONST OPTIONS = 800
- CONST APPHELP = 900
- CONST DIREXIST = 1000
- CONST CUSTINST = 6200
- CONST TOOBIG = 6300
- CONST BADPATH = 6400
- CONST CDGETNAMEORG = 7500
- CONST CDBADORG = 7800
- CONST MODELESS = 5000
- CONST MODELESS2 = 5001
- CONST ASKUPDATE = 5003
- CONST ASKYESNOBACK = 5004
- CONST ASKYESNO = 5005
- CONST CDBADFILE = 7200
- CONST GETSERIALNUM = 1100
- CONST ODBCINSTALL = 8100
- CONST ODBCBAD = 8200
- CONST ODBCNODM = 8300
- CONST ODBCBACK = 8400
- CONST ASKDEMO = 8500
-
- ''-- Bitmap ID's ----------------------------------------------------------
- CONST LOGO = 1
-
- ''-- Files Types ----------------------------------------------------------
- CONST APPFILES = 1
- CONST OPTFILES1 = 2
- CONST OPTFILES2 = 3
- CONST OPTFILES3 = 4
- CONST OPTFILES4 = 5
- CONST CRYPTFILES = 100
- CONST CTL3DFILES = 101
- CONST CONVERTFILES = 102
-
-
- ''-- Global variables -----------------------------------------------------
- GLOBAL DESTSQL$ ''Default destination directory.
- GLOBAL DESTKER$ ''Default destination directory.
- GLOBAL DESTCOM$ ''Default destination directory.
- GLOBAL SETUPPROG$ ''Full Path of DLL to be load.
- GLOBAL FILEPATH$ ''Temp File Path.
- GLOBAL WINDRIVE$ ''Windows drive letter.
- GLOBAL OPT1OPT$ ''Option selection from OptFiles1 option dialog.
- GLOBAL OPT2OPT$ ''Option selection from OptFiles2 option dialog.
- GLOBAL OPT3OPT$ ''Option selection from OptFiles1 option dialog.
- GLOBAL OPT4OPT$ ''Option selection from OptFiles2 option dialog.
-
- ''-- CustInst list symbol names -------------------------------------------
- GLOBAL APPNEEDS$ ''Option list costs per drive
- GLOBAL OPT1NEEDS$
- GLOBAL OPT2NEEDS$
- GLOBAL OPT3NEEDS$
- GLOBAL OPT4NEEDS$
- GLOBAL EXTRACOSTS$ ''List of extra costs to add per drive
- GLOBAL BIGLIST$ ''List of option files cost calc results (boolean)
-
- ''-- Dialog list symbol names ---------------------------------------------
- GLOBAL CHECKSTATES$
- GLOBAL STATUSTEXT$
- GLOBAL DRIVETEXT$
-
- GLOBAL DiskFileVersion$
- GLOBAL MasterFileVersion$
- GLOBAL TCPCONF$
- GLOBAL INSTALLEDKER%
- GLOBAL INSTALLKER%
- GLOBAL INSTALLEDSQL%
- GLOBAL INSTALLSQL%
- GLOBAL INSTALLCRYPT%
- GLOBAL INSTALLCTL3D%
- GLOBAL INSTALLCONVERT%
- GLOBAL FINDTUNPATH%
-
- ''-- Subroutine and function prototypes -----------------------------------
- DECLARE SUB RegisterCtl3d LIB "tunsql.dll"
- DECLARE SUB UnregisterCtl3d LIB "tunsql.dll"
- DECLARE SUB OutputDebug LIB "tuncomm.dll" (szStr$)
- DECLARE SUB ShowMaximize LIB "tuncomm.dll" (hWnd%)
- DECLARE SUB AddOptFilesToCopyList (ftype%)
- DECLARE SUB RecalcOptFiles (ftype%)
- DECLARE SUB RecalcPath
- DECLARE SUB SetDriveStatus
- DECLARE FUNCTION CheckConfig LIB "tuncomm.dll" (szOld$, szNew$) AS INTEGER
- ''DECLARE FUNCTION EncryptFile LIB "tuncomm.dll" (szPath$, szSer$, szKey$, szLi$) AS INTEGER
- DECLARE FUNCTION CheckDriverManager LIB "tuncomm.dll" (szWinDir$, szWinSysDir$) AS INTEGER
- DECLARE FUNCTION InstallODBC LIB "tuncomm.dll" (hWnd%, szInstDir$, szOpt$) AS INTEGER
- DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
- DECLARE FUNCTION EncryptFile LIB "tuncomm.dll" (szPath$, szSer$, szKey$, szLi$) AS INTEGER
- DECLARE FUNCTION AddLangMenu LIB "tuncomm.dll" (szPath$) AS INTEGER
- DECLARE FUNCTION CreatIniConvert LIB "tuncomm.dll" (szPath$) AS INTEGER
- DECLARE FUNCTION CreatIniKer LIB "tuncomm.dll" (Path$,InstTcp%) AS INTEGER
- DECLARE FUNCTION CreatIniSql LIB "tuncomm.dll" (Path$) AS INTEGER
- DECLARE FUNCTION MyExitWindows LIB "tuncomm.dll" (nType%) AS INTEGER
-
-
- DECLARE FUNCTION IsInstalled (szSection$,szKey$,szFile$,szPath$) AS INTEGER
- DECLARE FUNCTION MakeString (i%) AS STRING
- DECLARE FUNCTION MakeDrive (i%) AS STRING
- DECLARE FUNCTION LookupApp (szAppName$) AS STRING
-
- DECLARE FUNCTION CustomSetup LIB "tunsql.dll" (frame%,szDir$)
- DECLARE FUNCTION AddTunDir LIB "tunsql.dll" (szDir$) AS INTEGER
- DECLARE FUNCTION FindExistingPath LIB "tunsql.dll" (szDir$) AS INTEGER
- DECLARE FUNCTION IsNewer (szVersion1$, szVersion2$) AS INTEGER
-
-
-
- ''-------------------------------------------------------------------------
- '' INIT
- '' Program entry point
- '' Set up variables and initial appearence. Load .INF file.
- ''-------------------------------------------------------------------------
- INIT:
- CUIDLL$ = "TUNSQL.dll" ''custom user interface dll
- HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure
-
-
- '' ---- Set up main window appearence ----
- '' ---- Display TUN SQL Setup bitmap and ----
- '' ---- set main window title ----
-
- hWnd% = HwndFrame()
- ShowMaximize hWnd%
- SetBitmap CUIDLL$, LOGO
- SetTitle "Tun SQL - Installation"
-
- '' ---- Read TUNSQL.INF ----
-
- szInf$ = GetSymbolValue("STF_SRCINFPATH")
- IF szInf$ = "" THEN
- szInf$ = GetSymbolValue("STF_CWDDIR") + "TUNSQL.INF"
- END IF
- ReadInfFile szInf$
-
- WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
- IF DEST$ = "" THEN
- DEST$ = WINDRIVE$ + ":\TUN"
- ENDIF
-
- '' ---- CustInst list symbols ----
- CHECKSTATES$ = "CheckItemsState"
- STATUSTEXT$ = "StatusItemsText"
- DRIVETEXT$ = "DriveStatusText"
- FOR i% = 1 TO 6 STEP 1
- AddListItem CHECKSTATES$, "OFF"
- NEXT i%
- FOR i% = 1 TO 6 STEP 1
- AddListItem STATUSTEXT$, ""
- NEXT i%
- FOR i% = 1 TO 7 STEP 1
- AddListItem DRIVETEXT$, ""
- NEXT i%
- ReplaceListItem DRIVETEXT$, 7, DEST$
-
- '' ---- Disk cost list symbols ----
- APPNEEDS$ = "AppNeeds"
- OPT1NEEDS$ = "Opt1Needs"
- OPT2NEEDS$ = "Opt2Needs"
- OPT3NEEDS$ = "Opt3Needs"
- OPT4NEEDS$ = "Opt4Needs"
- EXTRACOSTS$ = "ExtraCosts"
- BIGLIST$ = "BigList"
- FOR i% = 1 TO 6 STEP 1
- AddListItem BIGLIST$, ""
- NEXT i%
- FOR i% = 1 TO 26 STEP 1
- AddListItem EXTRACOSTS$, "0"
- AddListItem OPT1NEEDS$, "0"
- AddListItem OPT2NEEDS$, "0"
- AddListItem OPT3NEEDS$, "0"
- AddListItem OPT4NEEDS$, "0"
- NEXT i%
-
- '' ---- File Option Variables ----
- OPT1OPT$ = "1"
- OPT2OPT$ = "1"
- OPT3OPT$ = "1"
- OPT4OPT$ = "1"
-
- INSTALLEDKER% = 0
-
- RecalcPath
- SetDriveStatus
-
- '$IFDEF DEBUG
- i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal
- '$ENDIF ''DEBUG
-
- RegisterCtl3d
-
-
- ''-------------------------------------------------------------------------
- '' WELCOME
- '' Display the welcome setup dialog
- ''-------------------------------------------------------------------------
- IF WELCOMDLG$ <> "NO" THEN
- WELCOME:
- sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", 0, "" )
- IF sz$ = "EXIT" THEN
- GOSUB ASKQUIT
- GOTO WELCOME
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO WELCOME
- ENDIF
- UIPop 1
- ENDIF
-
-
- ''-------------------------------------------------------------------------
- '' CUSTINST
- '' Display the custom setup dialog
- ''-------------------------------------------------------------------------
- IF ASKCUSTOM$ <> "NO" THEN
- CUSTINST:
- sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", APPHELP, HELPPROC$)
-
- IF sz$ = "CONTINUE" THEN
- ''Install only if it will fit.
- FOR i% = 1 TO 6 STEP 1
- IF GetListItem(BIGLIST$, i%) <> "" THEN
- GOSUB TOOBIG
- GOTO CUSTINST
- END IF
- NEXT i%
- IF GetListItem(CHECKSTATES$, OPTFILES1) = "ON" THEN
- opt1$ = "DRIVERMANAGER"
- ELSE
- opt1$ = "NONE"
- END IF
- IF GetListItem(CHECKSTATES$, OPTFILES2) = "ON" THEN
- opt2$ = "SAMPLES"
- ELSE
- opt2$ = "NONE"
- END IF
- GOTO CHECKDMVERSION
- '' UIPop 1
- '' GOTO INSTALL
- ELSEIF sz$ = "PATH" THEN
- GOTO GETPATH
- ELSEIF sz$ = "CHK2" THEN
- RecalcOptFiles OPTFILES1
- SetDriveStatus
- GOTO CUSTINST
- ELSEIF sz$ = "CHK3" THEN
- RecalcOptFiles OPTFILES2
- SetDriveStatus
- GOTO CUSTINST
- ELSEIF sz$ = "CHK4" THEN
- RecalcOptFiles OPTFILES3
- IF INSTALLEDKER% <> 1 THEN
- RecalcOptFiles OPTFILES4
- ENDIF
- SetDriveStatus
- GOTO CUSTINST
- ELSEIF sz$ = "REACTIVATE" THEN
- RecalcPath
- SetDriveStatus
- GOTO CUSTINST
- ELSE
- GOSUB ASKQUIT
- GOTO CUSTINST
- END IF
- ENDIF
-
-
-
- ''-------------------------------------------------------------------------
- '' INSTALL
- '' Start the installation
- ''-------------------------------------------------------------------------
- INSTALL:
- '' DESTSQL$ = MakePath( DEST$ , "SQL")
- '' ClearCopyList
- '' AddOptFilesToCopyList APPFILES
- '' AddOptFilesToCopyList OPTFILES1
- '' AddOptFilesToCopyList OPTFILES2
- '' IF DoesDirExist( DEST$ ) = 1 THEN
- '' SetSymbolValue "EditTextIn", DEST$
- '' sz$ = UIStartDlg(CUIDLL$, DIREXIST, "FEditDlgProc", APPHELP, HELPPROC$)
-
- '' UIPop 1
-
- '' IF sz$ = "BACK" THEN
- '' GOTO CUSTINST
- '' ELSEIF sz$ = "EXIT" THEN
- '' GOSUB ASKQUIT
- '' GOTO INSTALL
- '' ELSEIF sz$ <> "CONTINUE" THEN
- '' GOTO INSTALL
- '' END IF
- '' END IF
-
- ''
- '' Init path sub-directory
- ''
-
- DESTKER$= MakePath( DEST$, "KERNELW")
- DESTSQL$= MakePath( DEST$, "SQL")
- DESTCOM$= MakePath( DEST$, "COMMON")
-
- ''
- '' Find type of installation
- ''
- IF GetListItem(CHECKSTATES$, OPTFILES3) = "ON" THEN
- INSTALLKER% = 1
- IF FINDINSTTYPE$ <> "NO" THEN
-
- FILEPATH$= MakePath( DESTKER$, "TUNTCPIP.DLL")
- IF DoesFileExist ( FILEPATH$, femExits) = 1 THEN
- MasterFileVersion$ = GetSectionKeyVersion("KernelFiles","TUNTCPIP.DLL")
- DiskFileVersion$ = GetVersionOfFile( FILEPATH$)
- INSTALLEDKER% = IsNewer( DiskFileVersion$, MasterFileVersion$)
- ENDIF
-
- IF INSTALLEDKER% = 1 THEN
- SetSymbolValue "TitleYesNoBack", "Update"
- SetSymbolValue "MessageYesNoBack", "The same version of Tun KERNEL has been found. Do you want to overwrite it ?"
- INSK1:
- sz$ = UIStartDlg(CUIDLL$, ASKYESNOBACK, "FAskYesNoBackDlgProc", 0, "")
- UIPop 1
- IF sz$ = "YES" THEN
- INSTALLKER% = 1
- ELSEIF sz$ = "BACK" THEN
- GOTO CUSTINST
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO INSK1
- ELSE
- INSTALLKER% = 0
- ENDIF
- ELSEIF INSTALLEDKER% = 2 THEN
- SetSymbolValue "TitleYesNoBack", "Update"
- SetSymbolValue "MessageYesNoBack", "A previous version of Tun KERNEL has been found. Do you want to overwrite it ?"
- INSK2:
- sz$ = UIStartDlg(CUIDLL$, ASKYESNOBACK, "FAskYesNoBackDlgProc", 0, "")
- UIPop 1
- IF sz$ = "YES" THEN
- INSTALLKER% = 2
- ELSEIF sz$ = "BACK" THEN
- GOTO CUSTINST
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO INSK2
- ELSE
- INSTALLKER% = 0
- ENDIF
- ELSE
- INSTALLKER% = 1
- ENDIF
- ENDIF
- ELSE
- INSTALLKER% = 0
- ENDIF
-
- INSTALLEDSQL% = 0
- INSTALLSQL% = 1
- INSTALLCRYPT% = 1
- INSTALLCTL3D% = 1
- INSTALLCONVERT% = 1
- IF FINDINSTTYPE$ <> "NO" THEN
-
- FILEPATH$= MakePath( DESTSQL$, "DRIVER\TUNODBC.DLL")
- IF DoesFileExist ( FILEPATH$, femExits) = 1 THEN
- MasterFileVersion$ = GetSectionKeyVersion("SqlFiles","TUNODBC.DLL")
- DiskFileVersion$ = GetVersionOfFile( FILEPATH$)
- INSTALLEDSQL% = IsNewer( DiskFileVersion$, MasterFileVersion$)
- ENDIF
-
- IF INSTALLEDSQL% = 1 THEN
- SetSymbolValue "TitleYesNoBack", "Update"
- SetSymbolValue "MessageYesNoBack", "The same version of Tun SQL has been found. Do you want to overwrite it ?"
- INSS1:
- sz$ = UIStartDlg(CUIDLL$, ASKYESNOBACK, "FAskYesNoBackDlgProc", 0, "")
- UIPop 1
- IF sz$ = "YES" THEN
- INSTALLSQL% = 1
- ELSEIF sz$ = "BACK" THEN
- GOTO CUSTINST
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO INSS1
- ELSE
- INSTALLSQL% = 0
- ENDIF
- ELSEIF INSTALLEDSQL% = 2 THEN
- SetSymbolValue "TitleYesNoBack", "Update"
- SetSymbolValue "MessageYesNoBack", "A previous version of Tun SQL has been found. Do you want to overwrite it ?"
- INSS2:
- sz$ = UIStartDlg(CUIDLL$, ASKYESNOBACK, "FAskYesNoBackDlgProc", 0, "")
- UIPop 1
- IF sz$ = "YES" THEN
- INSTALLSQL% = 2
- ELSEIF sz$ = "BACK" THEN
- GOTO CUSTINST
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO INSS2
- ELSE
- INSTALLSQL% = 0
- ENDIF
- ELSE
- INSTALLSQL% = 1
- ENDIF
-
- '' Tuncrypt ?
- fInst% = IsInstalled ("CryptFiles","TUNCRYPT.DLL","TUNCRYPT.DLL",DESTCOM$)
- IF fInst% <> 2 AND fInst% <> 4 THEN
- INSTALLCRYPT%=0
- ENDIF
-
- '' Convert ?
- fInst% = IsInstalled ("ConvertFiles","CONVERT.DLL","CONVERT.DLL",DESTCOM$)
- IF fInst% <> 2 AND fInst% <> 4 THEN
- INSTALLCONVERT%=0
- ENDIF
-
- '' CTL3D ?
- fInst% = IsInstalled ("Ctl3dFiles","CTL3D.TUN","CTL3D.DLL",GetWindowsSysDir)
- IF fInst% = 0 OR fInst% = 1 THEN
- INSTALLCTL3D%=0
- ELSEIF fInst% = 2 THEN
- INSTALLCTL3D%=2
- ENDIF
-
- ENDIF
- IF INSTALLSQL% = 0 AND INSTALLKER%= 0 THEN
- GOTO CUSTINST
- ENDIF
-
- ''-------------------------------------------------------------------------
- '' SERIAL
- '' Ask for serial number and activation key
- ''-------------------------------------------------------------------------
- IF ENCRYPTDLG$ <> "NO" THEN
- SERIAL:
- sz$ = UIStartDlg(CUIDLL$, GETSERIALNUM, "FNameOrgDlgProc", APPHELP, HELPPROC$)
- IF sz$ = "CANCEL" THEN
- sz$ = UIStartDlg(CUIDLL$, CDBADORG, "FInfoDlgProc", 0, "" )
- UIPop 1
- GOTO SERIAL
- ELSEIF sz$ = "EXIT" THEN
- GOSUB ASKQUIT
- GOTO SERIAL
- ELSEIF sz$ <> "CONTINUE" THEN
- GOTO SERIAL
- ENDIF
-
- szSN$ = GetSymbolValue( "NameOut" )
- szAK$ = GetSymbolValue( "OrgOut" )
- szLS$ = GetSymBolValue( "LicenseStringOut" )
- szHEAD$ = MID$( szSN$, 4, 2 )
- IF szHEAD$ <> "04" AND szHEAD$ <> "02" THEN
- BADF1:
- sz$ = UIStartDlg(CUIDLL$, CDBADFILE, "FInfoDlgProc", 0, "" )
- UIPop 1
- IF sz$ = "EXIT" THEN
- GOTO ASKQUIT
- GOTO SERIAL
- ELSEIF sz$ = "CONTINUE" THEN
- GOTO SERIAL
- ELSE
- GOTO BADF1
- ENDIF
- ENDIF
- UIPop 1
- ENDIF
-
-
- ''-------------------------------------------------------------------------
- '' COPYFILES
- '' Create directory and copy files
- ''-------------------------------------------------------------------------
- IF COPYFILES$ <> "NO" THEN
- ClearCopyList
- AddOptFilesToCopyList APPFILES
- AddOptFilesToCopyList OPTFILES1
- AddOptFilesToCopyList OPTFILES2
- IF INSTALLKER% <> 0 THEN
- AddOptFilesToCopyList OPTFILES3
- IF INSTALLKER% = 1 THEN
- AddOptFilesToCopyList OPTFILES4
- ENDIF
- ENDIF
- IF INSTALLCRYPT% = 1 THEN
- AddOptFilesToCopyList CRYPTFILES
- ENDIF
- IF INSTALLCONVERT% = 1 THEN
- AddOptFilesToCopyList CONVERTFILES
- ENDIF
- IF INSTALLCTL3D% <> 0 THEN
- AddOptFilesToCopyList CTL3DFILES
- ENDIF
- CreateDir DEST$, cmoNone
- SetRestartDir MakePath( DEST$, "TMP")
- CopyFilesInCopyList
-
- ENDIF
- ''COPYFILES:
- '' CreateDir DEST$, cmoNone
- '' CopyFilesInCopyList
-
-
- ''-------------------------------------------------------------------------
- '' ENCRYPT
- '' Encrypt executables and DLL
- ''-------------------------------------------------------------------------
- IF ENCRYPTFILES$ <> "NO" THEN
-
- '' SetSymbolValue "NameOut", szSN$
- '' SetSymbolValue "OrgOut", szAK$
- '' SetSymBolValue "LicenseStringOut", szLS$
- ''IF INSTALLKER% <> 0 THEN
- '' SetSymbolValue "PathFiles", DESTKER$
- '' SetSymbolValue "ProgramType", "KER"
- '' sz$ = UIStartDlg(CUIDLL$, MODELESS, "FModelessDlgProc", 0, "" )
- '' UIPop 1
- ''ENDIF
-
- ENCRYPT:
- curs% = ShowWaitCursor()
- '' szFileToEncrypt$ = MakePath( DESTSQL$, "BIN\DBSHOW.EXE" )
- '' fEncrypt% = EncryptFile( szFileToEncrypt$, szSN$, szAK$, szLS$ )
- '' szFileToEncrypt$ = MakePath( DESTSQL$, "BIN\TUNODBC.DLL" )
- '' fEncrypt% = EncryptFile( szFileToEncrypt$, szSN$, szAK$, szLS$ )
- '' szFileToEncrypt$ = MakePath( DESTSQL$, "BIN\DBSCRIPT.EXE" )
- '' fEncrypt% = EncryptFile( szFileToEncrypt$, szSN$, szAK$, szLS$ )
- '' szFileToEncrypt$ = MakePath( DESTSQL$, "BIN\DBMAP.EXE" )
- '' fEncrypt% = EncryptFile( szFileToEncrypt$, szSN$, szAK$, szLS$ )
-
- fEncryt%=EncryptFile(DESTCOM$, szSN$, szAK$, szLS$)
-
- RestoreCursor curs%
-
- ENDIF
-
- ''-------------------------------------------------------------------------
- '' CTL3D
- '' Check and Install CTL3D.DLL if required
- ''-------------------------------------------------------------------------
- CTL3D:
- szNF$ = MakePath(DESTCOM$ , "CTL3D.TUN")
- szOF$ = GetWindowsSysDir() + "CTL3D.DLL"
- IF INSTALLCTL3D% = 2 THEN
- CTL3D1:
- sz$ = UIStartDlg(CUIDLL$, ASKUPDATE, "FAskUpdateDlgProc", 0, "")
- IF sz$ = "YES" THEN
- CopyFile szOF$, GetWindowsSysDir() + "CTL3D.OLD", cmoOverwrite, 0
- CopyFile szNF$, szOF$, cmoOverwrite, 0
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO CTL3D1
- ENDIF
- UIPop 1
- ELSEIF INSTALLCTL3D% = 1 THEN
- CopyFile szNF$, szOF$, cmoOverwrite, 0
- ENDIF
-
-
- ''-------------------------------------------------------------------------
- '' ASKDEMO
- '' Ask the user for wich RDBMS he want to install DEMOS
- ''-------------------------------------------------------------------------
- ASKDEMO:
- IF opt2$ = "SAMPLES" THEN
- sz$ = UIStartDlg(CUIDLL$, ASKDEMO, "FAskDemoDlgProc", 0, "")
- IF sz$ = "CONTINUE" OR sz$ = "CANCEL" THEN
- szDemoIfx$ = GetSymbolValue( "IfxCheckbox" )
- szDemoOra$ = GetSymbolValue( "OraCheckbox" )
- szDemoSyb$ = GetSymbolValue( "SybCheckbox" )
- szDemoIse$ = GetSymbolValue( "IseCheckbox" )
- UIPop 1
- ELSEIF sz$ = "EXIT" THEN
- GOSUB ASKQUIT
- GOTO ASKDEMO
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO ASKDEMO
- ENDIF
- ENDIF
-
-
- ''-------------------------------------------------------------------------
- '' SAVEDM
- '' Save all driver manager components if required
- ''-------------------------------------------------------------------------
- SAVEDM:
- IF fSaveDM% = 1 THEN
- curs% = ShowWaitCursor()
- CreateDir MakePath(DESTSQL$, "ODBC.OLD"), cmoNone
- szSrc$ = GetWindowsSysDir() + "ODBC.DLL"
- IF DoesFileExist(szSrc$, femRead) THEN
- szDest$ = MakePath( DESTSQL$, "ODBC.OLD\ODBC.DLL")
- CopyFile szSrc$, szDest$, cmoOverwrite, 0
- ENDIF
- szSrc$ = GetWindowsSysDir() + "ODBCINST.DLL"
- IF DoesFileExist(szSrc$, femRead) THEN
- szDest$ = MakePath( DESTSQL$, "ODBC.OLD\ODBCINST.DLL")
- CopyFile szSrc$, szDest$, cmoOverwrite, 0
- ENDIF
- szSrc$ = GetWindowsSysDir() + "ODBCCURS.DLL"
- IF DoesFileExist(szSrc$, femRead) THEN
- szDest$ = MakePath( DESTSQL$, "ODBC.OLD\ODBCINST.DLL")
- CopyFile szSrc$, szDest$, cmoOverwrite, 0
- ENDIF
- szSrc$ = GetWindowsSysDir() + "ODBCINST.HLP"
- IF DoesFileExist(szSrc$, femRead) THEN
- szDest$ = MakePath( DESTSQL$, "ODBC.OLD\ODBCINST.HLP")
- CopyFile szSrc$, szDest$, cmoOverwrite, 0
- ENDIF
- szSrc$ = GetWindowsDir() + "ODBCADM.EXE"
- IF DoesFileExist(szSrc$, femRead) THEN
- szDest$ = MakePath( DESTSQL$, "ODBC.OLD\ODBCADM.EXE")
- CopyFile szSrc$, szDest$, cmoOverwrite, 0
- ENDIF
- szSrc$ = GetWindowsDir() + "ODBCINST.INI"
- IF DoesFileExist(szSrc$, femRead) THEN
- szDest$ = MakePath( DESTSQL$, "ODBC.OLD\ODBCINST.INI")
- CopyFile szSrc$, szDest$, cmoOverwrite, 0
- ENDIF
- szSrc$ = GetWindowsDir() + "ODBC.INI"
- IF DoesFileExist(szSrc$, femRead) THEN
- szDest$ = MakePath( DESTSQL$, "ODBC.OLD\ODBC.INI")
- CopyFile szSrc$, szDest$, cmoOverwrite, 0
- ENDIF
- RestoreCursor curs%
- ENDIF
-
-
- ''-------------------------------------------------------------------------
- '' INSTALLODBCDRIVER
- '' Install ODBC driver
- ''-------------------------------------------------------------------------
- INSTALLODBCDRIVER:
- IF opt1$ = "DRIVERMANAGER" THEN
- CopyFile MakePath( DESTSQL$, "BIN\TUNODBC.DLL"), MakePath( DESTSQL$, "DRIVER\TUNODBC.DLL"), cmoOverwrite, 0
- CopyFile MakePath( DESTSQL$, "BIN\TUNTRANS.DLL"), MakePath( DESTSQL$, "DRIVER\TUNTRANS.DLL"), cmoOverwrite, 0
- CopyFile MakePath( DESTSQL$, "BIN\TUNCS.DLL"), MakePath( DESTSQL$, "DRIVER\TUNCS.DLL"), cmoOverwrite, 0
- CopyFile MakePath( DESTSQL$, "BIN\TUNCSTIM.EXE"), MakePath( DESTSQL$, "DRIVER\TUNCSTIM.EXE"), cmoOverwrite, 0
- INSTALLODBC:
- hWnd% = HwndFrame()
- nRc% = InstallODBC(hWnd%, DESTSQL$, opt1$)
- IF nRc% = 0 THEN
- GOSUB ASKQUIT
- GOTO INSTALLODBC
- END IF
- ELSE
- curs% = ShowWaitCursor()
- '' ---- Copy files ----
- CopyFile MakePath( DESTSQL$, "BIN\TUNODBC.DLL"), MakePath( GetWindowsSysDir(), "TUNODBC.DLL"), cmoOverwrite, 0
- CopyFile MakePath( DESTSQL$, "BIN\TUNTRANS.DLL"), MakePath( GetWindowsSysDir(), "TUNTRANS.DLL"), cmoOverwrite, 0
- CopyFile MakePath( DESTSQL$, "BIN\TUNCS.DLL"), MakePath( GetWindowsSysDir(), "TUNCS.DLL"), cmoOverwrite, 0
- CopyFile MakePath( DESTSQL$, "BIN\TUNCSTIM.EXE"), MakePath( GetWindowsSysDir(), "TUNCSTIM.EXE"), cmoOverwrite, 0
-
- '' ---- Update ODBCINST.INI for Tun Driver ----
- CreateIniKeyValue MakePath( GetWindowsDir(), "ODBCINST.INI"), "ODBC Drivers", "Tun Driver", "Installed" ,cmoOverwrite
- CreateIniKeyValue MakePath( GetWindowsDir(), "ODBCINST.INI"), "Tun Driver", "Driver", MakePath( GetWindowsSysDir(), "TUNODBC.DLL" ), cmoOverwrite
- CreateIniKeyValue MakePath( GetWindowsDir(), "ODBCINST.INI"), "Tun Driver", "Setup", MakePath( GetWindowsSysDir(), "TUNODBC.DLL" ), cmoOverwrite
-
- '' ---- Update ODBCINST.INI for Tun Translator ----
- CreateIniKeyValue MakePath( GetWindowsDir(), "ODBCINST.INI"), "ODBC Translators", "Tun Translator", "Installed" ,cmoOverwrite
- CreateIniKeyValue MakePath( GetWindowsDir(), "ODBCINST.INI"), "Tun Translator", "Translator", MakePath( GetWindowsSysDir(), "TUNTRANS.DLL" ), cmoOverwrite
- CreateIniKeyValue MakePath( GetWindowsDir(), "ODBCINST.INI"), "Tun Translator", "Setup", MakePath( GetWindowsSysDir(), "TUNTRANS.DLL" ), cmoOverwrite
- RestoreCursor curs%
- END IF
-
- ''-------------------------------------------------------------------------
- '' UPDATEINIFILES
- '' Create or update entries in .INI files
- ''-------------------------------------------------------------------------
- IF CREATEINIFILES$ <> "NO" THEN
-
- UPDATEINIFILES:
-
- CursorSave% = ShowWaitCursor()
- '' ---- Create / Update entries in TUN.INI ----
-
- szLG$ = MID$( szSN$, 3, 1 )
- nLG% = (ASC(MID$(szSN$,6,1)) - ASC("0")) * 10 + (ASC(MID$(szSN$,7,1)) - ASC("0"))
- IF DoesIniKeyExist( MakePath( GetWindowsDir(), "TUN.INI"), "Language", "Language") = 0 THEN
- IF nLG% = 1 THEN
- szLGN$= "01"
- ELSEIF nLG% > 3 THEN
- szLGN$ = MakeString(nLG% - 2 )
- ELSE
- szLGN$ ="00"
- END IF
- CreateIniKeyValue MakePath( GetWindowsDir(), "TUN.INI"), "Language", "Language", szLGN$ ,cmoOverwrite
- END IF
-
- i%=AddLangMenu(DESTCOM$)
-
- IF INSTALLCONVERT% = 1 THEN
- i%=CreatIniConvert(DESTCOM$)
- ENDIF
-
- IF INSTALLKER% <> 0 THEN
- i%= CreatIniKer(DESTKER$,0)
- ENDIF
-
- i%= CreatIniSql(DESTSQL$)
-
- RestoreCursor CursorSave%
- ENDIF
-
- ''
- '' Add Path of Tun KERNEL in AUTOEXEC.BAT
- ''
- FINDTUNPATH%=1
- IF ADDPATH$ <> "NO" THEN
-
- IF INSTALLKER% <> 0 THEN
- FINDTUNPATH% = FindExistingPath(DESTKER$)
- IF FINDTUNPATH% = 0 THEN
- i% = AddTunDir(DESTKER$)
- ENDIF
- ENDIF
- ENDIF
-
- ''
- '' Ask to configure TCP/IP
- ''
- TCPCONF$ = "NO"
-
- IF ASKTCPCONF$ <> "NO" THEN
-
- IF INSTALLKER% <> 0 THEN
- SetSymbolValue "MessageYesNo", "Do you want to configure TCP/IP now ? This can be done later running the Administrator"
- SetSymbolValue "TitleYesNo", "TCP/IP Configuration"
- TCPCONF1:
- TCPCONF$ = UIStartDlg(CUIDLL$, ASKYESNO, "FAskYesNoDlgProc", 0, "" )
- IF TCPCONF$ = "REACTIVATE" THEN
- GOTO TCPCONF1
- ENDIF
- UIPop 1
- ENDIF
-
- ENDIF
-
- IF CREATEGROUPS$ <> "NO" THEN
-
- ''-------------------------------------------------------------------------
- '' TUN KERNEL Program group and program items creation
- ''-------------------------------------------------------------------------
- IF INSTALLKER% <> 0 THEN
- CreateProgmanGroup "Tun KERNEL", "", cmoNone
- ShowProgmanGroup "Tun KERNEL", 1, cmoNone
- CreateProgmanItem "Tun KERNEL", "Admin", MakePath( DESTKER$, "WTUNTCPW.EXE -NFS -NFSD -LPR -LPD -FTPD" ), "", cmoOverwrite
- CreateProgmanItem "Tun KERNEL", "WTCPIP", MakePath( DESTKER$, "WTCPIP.EXE" ), "", cmoOverwrite
- CreateProgmanItem "Tun KERNEL", "Ping", MakePath( DESTKER$, "WPING.EXE" ), "", cmoOverwrite
-
- ENDIF
-
- ''-------------------------------------------------------------------------
- '' CREATEAPPGROUP
- '' TUN SQL Program group and program items creation
- ''-------------------------------------------------------------------------
- CREATEAPPGROUP:
- CreateProgmanGroup "Tun SQL", "", cmoNone
- ShowProgmanGroup "Tun SQL", 1, cmoNone
- CreateProgmanItem "Tun SQL", "DB Show", MakePath( DESTSQL$, "BIN\DBSHOW.EXE" ), "", cmoOverwrite
- CreateProgmanItem "Tun SQL", "DB Script", MakePath( DESTSQL$, "BIN\DBSCRIPT.EXE" ), "", cmoOverwrite
- CreateProgmanItem "Tun SQL", "DB Map", MakePath( DESTSQL$, "BIN\DBMAP.EXE" ), "", cmoOverwrite
-
- ''-------------------------------------------------------------------------
- '' CREATESAMPLESGROUP
- '' TUN SQL Sample program items creation
- ''-------------------------------------------------------------------------
- CREATESAMPLESGROUP:
- IF opt2$ = "SAMPLES" THEN
- '' ---- Word demo's ----
- szIco$ = MakePath( DESTSQL$, "DEMO\WORD\ODBCWRD.ICO" )
- szWorkDir$ = MakePath( DESTSQL$, "DEMO\WORD" )
- szPar$ = szIco$ + ",,,," + szWorkDir$
- szExePath$ = LookupApp("WORD")
- IF szDemoIfx$ = "YES" THEN
- szCmd$ = szExePath$ + " IFXDEMO1.DOC"
- CreateProgmanItem "TUN SQL", "MS Word Informix TABLE", szCmd$ , szPar$, cmoOverwrite
- szCmd$ = szExePath$ + " IFXDEMO2.DOC"
- CreateProgmanItem "TUN SQL", "MS Word Informix MAILING", szCmd$ , szPar$, cmoOverwrite
- END IF
- IF szDemoOra$ = "YES" THEN
- szCmd$ = szExePath$ + " ORADEMO1.DOC"
- CreateProgmanItem "TUN SQL", "MS Word Oracle TABLE", szCmd$ , szPar$, cmoOverwrite
- szCmd$ = szExePath$ + " ORADEMO2.DOC"
- CreateProgmanItem "TUN SQL", "MS Word Oracle MAILING", szCmd$ , szPar$, cmoOverwrite
- END IF
- IF szDemoSyb$ = "YES" THEN
- szCmd$ = szExePath$ + " SYBDEMO1.DOC"
- CreateProgmanItem "TUN SQL", "MS Word Sybase TABLE", szCmd$ , szPar$, cmoOverwrite
- szCmd$ = szExePath$ + " SYBDEMO2.DOC"
- CreateProgmanItem "TUN SQL", "MS Word Sybase MAILING", szCmd$ , szPar$, cmoOverwrite
- END IF
- IF szDemoIse$ = "YES" THEN
- szCmd$ = szExePath$ + " ISEDEMO1.DOC"
- CreateProgmanItem "TUN SQL", "MS Word Informix-SE TABLE", szCmd$ , szPar$, cmoOverwrite
- szCmd$ = szExePath$ + " ISEDEMO2.DOC"
- CreateProgmanItem "TUN SQL", "MS Word Informix-SE MAILING", szCmd$ , szPar$, cmoOverwrite
- END IF
-
- '' ---- Excel demo's ----
- szIco$ = MakePath( DESTSQL$, "DEMO\EXCEL\ODBCEXC.ICO" )
- szWorkDir$ = MakePath( DESTSQL$, "DEMO\EXCEL" )
- szPar$ = szIco$ + ",,,," + szWorkDir$
- szExePath$ = LookupApp("EXCEL")
- IF szDemoIfx$ = "YES" THEN
- szCmd$ = szExePath$ + " IFXDEMO1.XLS"
- CreateProgmanItem "TUN SQL", "MS Excel Informix TABLE", szCmd$ , szPar$, cmoOverwrite
- szCmd$ = szExePath$ + " IFXDEMO2.XLS"
- CreateProgmanItem "TUN SQL", "MS Excel Informix X-TABLE", szCmd$ , szPar$, cmoOverwrite
- szCmd$ = szExePath$ + " IFXDEMO3.XLS"
- CreateProgmanItem "TUN SQL", "MS Excel Informix REQUEST", szCmd$ , szPar$, cmoOverwrite
- END IF
- IF szDemoOra$ = "YES" THEN
- szCmd$ = szExePath$ + " ORADEMO1.XLS"
- CreateProgmanItem "TUN SQL", "MS Excel Oracle TABLE", szCmd$ , szPar$, cmoOverwrite
- szCmd$ = szExePath$ + " ORADEMO2.XLS"
- CreateProgmanItem "TUN SQL", "MS Excel Oracle X-TABLE", szCmd$ , szPar$, cmoOverwrite
- szCmd$ = szExePath$ + " ORADEMO3.XLS"
- CreateProgmanItem "TUN SQL", "MS Excel Oracle REQUEST", szCmd$ , szPar$, cmoOverwrite
- END IF
- IF szDemoSyb$ = "YES" THEN
- szCmd$ = szExePath$ + " SYBDEMO1.XLS"
- CreateProgmanItem "TUN SQL", "MS Excel Sybase TABLE", szCmd$ , szPar$, cmoOverwrite
- szCmd$ = szExePath$ + " SYBDEMO2.XLS"
- CreateProgmanItem "TUN SQL", "MS Excel Sybase X-TABLE", szCmd$ , szPar$, cmoOverwrite
- szCmd$ = szExePath$ + " SYBDEMO3.XLS"
- CreateProgmanItem "TUN SQL", "MS Excel Sybase REQUEST", szCmd$ , szPar$, cmoOverwrite
- END IF
- IF szDemoIse$ = "YES" THEN
- szCmd$ = szExePath$ + " ISEDEMO1.XLS"
- CreateProgmanItem "TUN SQL", "MS Excel Informix-SE TABLE", szCmd$ , szPar$, cmoOverwrite
- szCmd$ = szExePath$ + " ISEDEMO2.XLS"
- CreateProgmanItem "TUN SQL", "MS Excel Informix-SE X-TABLE", szCmd$ , szPar$, cmoOverwrite
- szCmd$ = szExePath$ + " ISEDEMO3.XLS"
- CreateProgmanItem "TUN SQL", "MS Excel Informix-SE REQUEST", szCmd$ , szPar$, cmoOverwrite
- END IF
-
- '' ---- Access demo's ----
- szIco$ = MakePath( DESTSQL$, "DEMO\ACCESS\ODBCACC.ICO" )
- szWorkDir$ = MakePath( DESTSQL$, "DEMO\ACCESS" )
- szPar$ = szIco$ + ",,,," + szWorkDir$
- szExePath$ = LookupApp("ACCESS")
- IF szDemoIfx$ = "YES" THEN
- szCmd$ = szExePath$ + " IFXDEMO.MDB"
- CreateProgmanItem "TUN SQL", "MS Access Informix TABLE LINK", szCmd$ , szPar$, cmoOverwrite
- END IF
- IF szDemoOra$ = "YES" THEN
- szCmd$ = szExePath$ + " ORADEMO.MDB"
- CreateProgmanItem "TUN SQL", "MS Access Oracle TABLE LINK", szCmd$ , szPar$, cmoOverwrite
- END IF
- IF szDemoSyb$ = "YES" THEN
- szCmd$ = szExePath$ + " SYBDEMO.MDB"
- CreateProgmanItem "TUN SQL", "MS Access Sybase TABLE LINK", szCmd$ , szPar$, cmoOverwrite
- END IF
- IF szDemoIse$ = "YES" THEN
- szCmd$ = szExePath$ + " ISEDEMO.MDB"
- CreateProgmanItem "TUN SQL", "MS Access Informix-SE TABLE LINK", szCmd$ , szPar$, cmoOverwrite
- END IF
- END IF
- ENDIF
-
- ''
- '' Run TCP/IP Custom Dialogs
- ''
- IF RUNTCPCONF$ <> "NO" THEN
-
- IF INSTALLKER% <> 0 THEN
- IF TCPCONF$= "YES" THEN
- SETUPPROG$= MakePath( DESTKER$, "WTCPDLG.DLL")
- i% = CustomSetup( WndFrame%, SETUPPROG$)
- ENDIF
- ENDIF
- ENDIF
-
-
- ''-------------------------------------------------------------------------
- '' QUIT
- '' Exit the program after displaying the appropriate dialog box according
- '' the error status
- ''-------------------------------------------------------------------------
- QUIT:
- ON ERROR GOTO ERRQUIT
-
- IF ERR = 0 THEN
- dlg% = EXITSUCCESS
- IF COPYFILES$ <> "NO" THEN
- IF RestartListEmpty() = 0 THEN
- dumb% = ExitExecRestart()
- END IF
- ENDIF
- IF FINDTUNPATH% = 0 THEN
- REBOOT1:
- SetSymbolValue "TitleYesNo", "Restart System"
- SetSymbolValue "MessageYesNo", "Setup has modified AUTOEXEC.BAT file. Do you want to restart the computer ?"
- sz$ = UIStartDlg(CUIDLL$, ASKYESNO, "FAskYesNoDlgProc", 0, "")
- UIPop 1
- IF sz$ <> "NO" THEN
- i%=MyExitWindows(1)
- GOTO REBOOT1
- ENDIF
- ENDIF
- ELSEIF ERR = STFQUIT THEN
- dlg% = EXITQUIT
- ELSE
- dlg% = EXITFAILURE
- END IF
- QUITL1:
- sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO QUITL1
- END IF
- UnregisterCtl3d
- UIPop 1
-
- END
-
- ERRQUIT:
- i% = DoMsgBox("Setup script sources are not correct, please contact your technical support", "Setup Warning", MB_OK+MB_TASKMODAL+MB_ICONHAND)
- END
-
-
-
- ''-------------------------------------------------------------------------
- '' GETPATH
- '' Ask for TUN SQL Installation directory
- ''-------------------------------------------------------------------------
- GETPATH:
- SetSymbolValue "EditTextIn", DEST$
- SetSymbolValue "EditFocus", "END"
- GETPATHL1:
- sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
-
- IF sz$ = "CONTINUE" THEN
- olddest$ = DEST$
- DEST$ = GetSymbolValue("EditTextOut")
-
- ''Validate new path.
- IF IsDirWritable(DEST$) = 0 THEN
- GOSUB BADPATH
- GOTO GETPATHL1
- END IF
- UIPop 1
-
- ''Truncate display if too long.
- IF LEN(DEST$) > 23 THEN
- ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
- ELSE
- ReplaceListItem DRIVETEXT$, 7, DEST$
- END IF
-
- ''Recalc if path changed.
- IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
- RecalcPath
- SetDriveStatus
- END IF
-
- olddest$ = ""
- GOTO CUSTINST
- ELSEIF sz$ = "REACTIVATE" THEN
- RecalcPath
- SetDriveStatus
- GOTO GETPATHL1
- ELSEIF sz$ = "EXIT" THEN
- GOSUB ASKQUIT
- GOTO GETPATHL1
- ELSE
- UIPop 1
- GOTO CUSTINST
- END IF
-
-
-
- ''-------------------------------------------------------------------------
- '' ASKUPDATE
- '' Ask for upgrading the CTL3D.DLL library
- ''-------------------------------------------------------------------------
- ASKUPDATE:
- sz$ = UIStartDlg(CUIDLL$, ASKUPDATE, "FAskUpdateDlgProc", 0, "")
- IF sz$ = "YES" THEN
- CopyFile szOF$, GetWindowsSysDir() + "CTL3D.OLD", cmoOverwrite, 0
- CopyFile szNF$, szOF$, cmoOverwrite, 0
- ENDIF
-
- UIPop 1
- RETURN
-
-
- ''-------------------------------------------------------------------------
- '' CHECKDMVERSION
- '' If present, check that the driver manager version is greater than
- '' 1.00. If not, display a dialog box to inform the user.
- ''-------------------------------------------------------------------------
- CHECKDMVERSION:
- szWinDir$ = GetWindowsDir()
- szWinSysDir$ = GetWindowsSysDir()
- fSaveDM% = 0
- fDM% = CheckDriverManager(szWinDir$, szWinSysDir$)
- IF fDM% = 0 THEN
- '' ---- No driver manager is currently installed ----
- IF opt1$ = "NONE" THEN
- sz$ = UIStartDlg(CUIDLL$,ODBCNODM,"FInfoDlgProc",APPHELP,HELPPROC$)
- IF sz$ = "BACK" THEN
- UIPop 1
- GOTO CUSTINST
- ELSEIF sz$ = "CONTINUE" THEN
- UIPop 2
- GOTO INSTALL
- ELSEIF sz$ = "EXIT" THEN
- GOSUB ASKQUIT
- GOTO CHECKDMVERSION
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO CHECKDMVERSION
- ENDIF
- ELSE
- '' ---- Hide the Custom install dialog ----
- UIPop 1
- GOTO INSTALL
- ENDIF
- ELSEIF fDM% = -1 THEN
- '' ---- Driver manager version is less than 2.00 ----
- IF opt1$ = "NONE" THEN
- '' ---- User has not selected DM Installation ----
- '' ---- So we display a Version Warning Dialog ----
- sz$ = UIStartDlg(CUIDLL$,ODBCBAD,"FInfoDlgProc",APPHELP,HELPPROC$)
- IF sz$ = "BACK" THEN
- UIPop 1
- GOTO CUSTINST
- ELSEIF sz$ = "CONTINUE" THEN
- UIPop 2
- GOTO INSTALL
- ELSEIF sz$ = "EXIT" THEN
- GOSUB ASKQUIT
- GOTO CHECKDMVERSION
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO CHECKDMVERSION
- ENDIF
- ELSE
- '' ---- User has selected DM Installation ----
- '' ---- So we display a Backup Copy Dialog ----
- sz$ = UIStartDlg(CUIDLL$,ODBCBACK,"FInfoDlgProc",APPHELP,HELPPROC$)
- IF sz$ = "BACK" THEN
- UIPop 1
- GOTO CUSTINST
- ELSEIF sz$ = "CONTINUE" THEN
- UIPop 2
- fSaveDM% = 1
- GOTO INSTALL
- ELSEIF sz$ = "EXIT" THEN
- GOSUB ASKQUIT
- GOTO CHECKDMVERSION
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO CHECKDMVERSION
- ENDIF
- ENDIF
- ELSEIF fDM% = 1 THEN
- '' ---- Driver manager version is 2.00 ----
- IF opt1$ = "DRIVERMANAGER" THEN
- '' ---- User has selected DM Installation ----
- '' ---- So we display a Backup Copy Dialog ----
- sz$ = UIStartDlg(CUIDLL$,ODBCBACK,"FInfoDlgProc",APPHELP,HELPPROC$)
- IF sz$ = "BACK" THEN
- UIPop 1
- GOTO CUSTINST
- ELSEIF sz$ = "CONTINUE" THEN
- UIPop 2
- fSaveDM% = 1
- GOTO INSTALL
- ELSEIF sz$ = "EXIT" THEN
- GOSUB ASKQUIT
- GOTO CHECKDMVERSION
- ENDIF
- ELSE
- '' ---- User has not selected DM Installation -> OK ----
- '' ---- We hide the Custom install dialog and proceed install ----
- UIPop 1
- GOTO INSTALL
- ENDIF
- ELSE
- GOTO CUSTINST
- ENDIF
-
-
-
- ''-------------------------------------------------------------------------
- '' TOOBIG
- '' Inform the user he does not have enough disk space
- ''-------------------------------------------------------------------------
- TOOBIG:
- sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- RecalcPath
- SetDriveStatus
- GOTO TOOBIG
- END IF
- UIPop 1
- RETURN
-
-
-
- ''-------------------------------------------------------------------------
- '' BADPATH
- '' Inform the user that the path he entered is not valid
- ''-------------------------------------------------------------------------
- BADPATH:
- sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- RecalcPath
- SetDriveStatus
- GOTO BADPATH
- END IF
- UIPop 1
- RETURN
-
-
- ''-------------------------------------------------------------------------
- '' ASKQUIT
- '' Ask the user if he really want to quit TUN SQL setup or continue
- '' the installation
- ''-------------------------------------------------------------------------
- ASKQUIT:
- sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
-
- IF sz$ = "EXIT" THEN
- UIPopAll
- ERROR STFQUIT
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO ASKQUIT
- ELSE
- UIPop 1
- END IF
- RETURN
-
-
- '*************************************************************************
- '**
- '** Purpose:
- '** Adds the specified option files to the copy list.
- '** Arguments:
- '** ftype% - type of files to add, one of the following:
- '** APPFILES, OPTFILES1, OPTFILES2
- '** Returns:
- '** none.
- '*************************************************************************
- SUB AddOptFilesToCopyList (ftype%) STATIC
-
- SrcDir$ = GetSymbolValue("STF_SRCDIR")
- IF ftype% = APPFILES THEN
- AddSectionFilesToCopyList "SqlFiles", SrcDir$, DEST$
- ELSEIF ftype% = OPTFILES1 AND GetListItem(CHECKSTATES$, OPTFILES1) = "ON" THEN
- AddSectionFilesToCopyList "OdbcFiles", SrcDir$, DEST$
- ELSEIF ftype% = OPTFILES2 AND GetListItem(CHECKSTATES$, OPTFILES2) = "ON" THEN
- AddSectionFilesToCopyList "SamplesFiles", SrcDir$, DEST$
- ELSEIF ftype% = OPTFILES3 AND GetListItem(CHECKSTATES$, OPTFILES3) = "ON" THEN
- AddSectionFilesToCopyList "KernelFiles", SrcDir$, DEST$
- ELSEIF ftype% = OPTFILES4 THEN
- AddSectionFilesToCopyList "KernelnFiles", SrcDir$, DEST$
- ELSEIF ftype% = CRYPTFILES THEN
- AddSectionFilesToCopyList "CryptFiles", SrcDir$, DEST$
- ELSEIF ftype% = CTL3DFILES THEN
- AddSectionFilesToCopyList "Ctl3dFiles", SrcDir$, DEST$
- ELSEIF ftype% = CONVERTFILES THEN
- AddSectionFilesToCopyList "ConvertFiles", SrcDir$, DEST$
- ENDIF
- SrcDir$ = ""
-
- END SUB
-
-
- '*************************************************************************
- '**
- '** Purpose:
- '** Recalculates disk space for the given option files and sets
- '** the status info symbol "StatusItemsText".
- '** Arguments:
- '** ftype% - type of files to add, one of the following:
- '** APPFILES, OPTFILES1, OPTFILES2
- '** Returns:
- '** none.
- '*************************************************************************
- SUB RecalcOptFiles (ftype%) STATIC
- CursorSave% = ShowWaitCursor()
- ClearCopyList
- AddOptFilesToCopyList ftype%
-
- fExtra% = 0
- IF ftype% = APPFILES THEN
- ListSym$ = APPNEEDS$
- ''Add extra cost to Windows drive for ini/progman, etc.
- ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
- ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
- fExtra% = 1
- ELSEIF ftype% = OPTFILES1 THEN
- ListSym$ = OPT1NEEDS$
- ELSEIF ftype% = OPTFILES2 THEN
- ListSym$ = OPT2NEEDS$
- ELSEIF ftype% = OPTFILES3 THEN
- ListSym$ = OPT3NEEDS$
- ELSEIF ftype% = OPTFILES4 THEN
- ListSym$ = OPT4NEEDS$
- END IF
-
- StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
-
- cost& = 0
- FOR i% = 1 TO 26 STEP 1
- cost& = cost& + VAL(GetListItem(ListSym$, i%))
- NEXT i%
- ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
-
- IF StillNeed& > 0 THEN
- ReplaceListItem BIGLIST$, ftype%, "YES"
- ELSE
- ReplaceListItem BIGLIST$, ftype%, ""
- END IF
-
- IF fExtra% THEN
- ReplaceListItem EXTRACOSTS$, ndrive%, "0"
- END IF
- RestoreCursor CursorSave%
- ListSym$ = ""
- END SUB
-
-
- '*************************************************************************
- '**
- '** Purpose:
- '** Recalculates disk space and sets option status info according
- '** to the current destination path.
- '** Arguments:
- '** none.
- '** Returns:
- '** none.
- '*************************************************************************
- SUB RecalcPath STATIC
-
- CursorSave% = ShowWaitCursor()
-
- DESTKER$= MakePath( DEST$, "KERNELW")
- FILEPATH$= MakePath( DESTKER$, "TUNTCPIP.DLL")
- IF DoesFileExist ( FILEPATH$, femExits) = 1 THEN
- MasterFileVersion$ = GetSectionKeyVersion("KernelFiles","TUNTCPIP.DLL")
- DiskFileVersion$ = GetVersionOfFile( FILEPATH$)
- INSTALLEDKER% = IsNewer( DiskFileVersion$, MasterFileVersion$)
- ENDIF
- RecalcOptFiles APPFILES
- RecalcOptFiles OPTFILES1
- RecalcOptFiles OPTFILES2
- IF INSTALLEDKER% <> 1 THEN
- ReplaceListItem CHECKSTATES$, OPTFILES3, "ON"
- ELSE
- ReplaceListItem CHECKSTATES$, OPTFILES3, "OFF"
- ENDIF
- RecalcOptFiles OPTFILES3
- IF INSTALLEDKER% <> 1 THEN
- RecalcOptFiles OPTFILES4
- ENDIF
-
- RestoreCursor CursorSave%
- END SUB
-
-
- '*************************************************************************
- '**
- '** Purpose:
- '** Sets drive status info according to latest disk space calcs.
- '** Arguments:
- '** none.
- '** Returns:
- '** none.
- '*************************************************************************
- SUB SetDriveStatus STATIC
-
- drive$ = MID$(DEST$, 1, 1)
- ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
- cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%)) + VAL(GetListItem(OPT3NEEDS$, ndrive%)) + VAL(GetListItem(OPT4NEEDS$, ndrive%))
- free& = GetFreeSpaceForDrive(drive$)
- ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
- ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
- ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
-
- IF drive$ = WINDRIVE$ THEN
- ReplaceListItem DRIVETEXT$, 4, ""
- ReplaceListItem DRIVETEXT$, 5, ""
- ReplaceListItem DRIVETEXT$, 6, ""
- ELSE
- ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
- cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%)) + VAL(GetListItem(OPT3NEEDS$, ndrive%)) + VAL(GetListItem(OPT4NEEDS$, ndrive%))
- IF cost& = 0 THEN
- ReplaceListItem DRIVETEXT$, 4, ""
- ReplaceListItem DRIVETEXT$, 5, ""
- ReplaceListItem DRIVETEXT$, 6, ""
- ELSE
- free& = GetFreeSpaceForDrive(WINDRIVE$)
- ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
- ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
- ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
- END IF
- END IF
- END SUB
-
-
- '*************************************************************************
- '**
- '** Purpose:
- '** Appends a file name to the end of a directory path,
- '** inserting a backslash character as needed.
- '** Arguments:
- '** szDir$ - full directory path (with optional ending "\")
- '** szFile$ - filename to append to directory
- '** Returns:
- '** Resulting fully qualified path name.
- '*************************************************************************
- FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
- IF szDir$ = "" THEN
- MakePath = szFile$
- ELSEIF szFile$ = "" THEN
- MakePath = szDir$
- ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
- MakePath = szDir$ + szFile$
- ELSE
- MakePath = szDir$ + "\" + szFile$
- END IF
- END FUNCTION
-
-
- '*************************************************************************
- '**
- '** Purpose:
- '** Return the string form of an integer.
- '** Arguments:
- '** i% - The integer to transform.
- '** Returns:
- '** The string form of the integer.
- '*************************************************************************
- FUNCTION MakeString (i%) STATIC AS STRING
-
- Number$ = "0123456789"
- MakeString = "0" + MID$(Number$,i%+1 ,1)
-
- END FUNCTION
-
- '*************************************************************************
- '**
- '** Purpose:
- '** Return the string form of a drive number (1 is drive A, ...)
- '** Arguments:
- '** i% - The drive number starting at 1
- '** Returns:
- '** The string form of the drive.
- '*************************************************************************
-
- FUNCTION MakeDrive (i%) STATIC AS STRING
-
- Letters$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- MakeDrive = MID$(Letters$,i%,1)
-
- END FUNCTION
-
-
- '*************************************************************************
- '**
- '** Purpose:
- '** Giving an application name try to locate the complete path of the
- '** application executable
- '** Arguments:
- '** szAppName$ - The application name to locate. One of the following:
- '** "WORD"
- '** "EXCEL"
- '** "ACCESS"
- '** Returns:
- '** The complete path of the application executable
- '*************************************************************************
-
- FUNCTION LookupApp (szAppName$) STATIC AS STRING
-
- LookupApp = "APPLI.EXE"
- FOR i% = 3 TO 26 STEP 1
- szDrive$ = MakeDrive(i%)
- IF IsDriveValid(szDrive$) = 1 THEN
- IF IsDriveRemovable(szDrive$) = 0 THEN
- IF szAppName$ = "WORD" THEN
- szExeName$ = "WINWORD.EXE"
- szPath$ = szDrive$ + ":\MSOFFICE\WINWORD\" + szExeName$
- IF DoesFileExist(szPath$, femRead) THEN
- LookupApp = szPath$
- GOTO RETURN_LOOKUPAPP
- ELSE
- szPath$ = szDrive$ + ":\WINWORD\" + szExeName$
- IF DoesFileExist(szPath$, femRead) THEN
- LookupApp = szPath$
- GOTO RETURN_LOOKUPAPP
- ELSE
- LookupApp = szExeName$
- ENDIF
- ENDIF
- ELSEIF szAppName$ = "EXCEL" THEN
- szExeName$ = "EXCEL.EXE"
- szPath$ = szDrive$ + ":\MSOFFICE\EXCEL\" + szExeName$
- IF DoesFileExist(szPath$, femRead) THEN
- LookupApp = szPath$
- GOTO RETURN_LOOKUPAPP
- ELSE
- szPath$ = szDrive$ + ":\EXCEL\" + szExeName$
- IF DoesFileExist(szPath$, femRead) THEN
- LookupApp = szPath$
- GOTO RETURN_LOOKUPAPP
- ELSE
- LookupApp = szExeName$
- ENDIF
- ENDIF
- ELSEIF szAppName$ = "ACCESS" THEN
- szExeName$ = "MSACCESS.EXE"
- szPath$ = szDrive$ + ":\MSOFFICE\ACCESS\" + szExeName$
- IF DoesFileExist(szPath$, femRead) THEN
- LookupApp = szPath$
- GOTO RETURN_LOOKUPAPP
- ELSE
- szPath$ = szDrive$ + ":\ACCESS\" + szExeName$
- IF DoesFileExist(szPath$, femRead) THEN
- LookupApp = szPath$
- GOTO RETURN_LOOKUPAPP
- ELSE
- LookupApp = szExeName$
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- ENDIF
- NEXT i%
-
- RETURN_LOOKUPAPP:
-
- END FUNCTION
-
- '**
- '** Purpose:
- '** Newest version
- '** Arguments:
- '** szVersion1$ - N.N.N.N version string 1
- '** szVersion2$ - N.N.N.N version string 2
- '** Returns:
- '** If szVersion1$ > szVersion2$ return 0
- '** If szVersion1$ = szVersion2$ return 1
- '** If szVersion1$ < szVersion2$ return 2
- '*************************************************************************
- FUNCTION IsNewer (szVersion1$, szVersion2$) STATIC AS INTEGER
-
- IF GetVersionNthField(szVersion1$,1) < GetVersionNthField(szVersion2$,1) THEN
- IsNewer = 2
- ELSEIF GetVersionNthField(szVersion1$,1) > GetVersionNthField(szVersion2$,1) THEN
- IsNewer = 0
- ELSE
- IF GetVersionNthField(szVersion1$,2) < GetVersionNthField(szVersion2$,2) THEN
- IsNewer = 2
- ELSEIF GetVersionNthField(szVersion1$,2) > GetVersionNthField(szVersion2$,2) THEN
- IsNewer = 0
- ELSE
- IF GetVersionNthField(szVersion1$,3) < GetVersionNthField(szVersion2$,3) THEN
- IsNewer = 2
- ELSEIF GetVersionNthField(szVersion1$,3) > GetVersionNthField(szVersion2$,3) THEN
- IsNewer = 0
- ELSE
- IF GetVersionNthField(szVersion1$,4) < GetVersionNthField(szVersion2$,4) THEN
- IsNewer = 2
- ELSEIF GetVersionNthField(szVersion1$,4) > GetVersionNthField(szVersion2$,4) THEN
- IsNewer = 0
- ELSE
- IsNewer = 1
- END IF
- END IF
- END IF
- END IF
-
- END FUNCTION
-
- FUNCTION IsInstalled(szSection$,szKey$,szFile$,szPath$) STATIC AS INTEGER
-
- IsInstalled = 4
- FILEPATH$= MakePath( szPath$, szFile$)
- IF DoesFileExist ( FILEPATH$, femExists) = 1 THEN
- MasterFileVersion$ = GetSectionKeyVersion(szSection$,szKey$)
- DiskFileVersion$ = GetVersionOfFile( FILEPATH$)
- IsInstalled = IsNewer( DiskFileVersion$, MasterFileVersion$)
- ENDIF
-
- END FUNCTION